﻿
using System.Collections.Generic;

namespace SuperGo.SilverlightLib.Sgf {
    internal abstract class SgfBaseNode {

    }

    internal class SgfGameTreeNode : SgfBaseNode {
        private readonly List<SgfGameTreeNode> _childTrees = new List<SgfGameTreeNode>();

        public SgfPropertyNode[][] Sequence { get; set; }
        public List<SgfGameTreeNode> ChildTrees { get { return _childTrees; } }
    }

    internal class SgfPropertyNode : SgfBaseNode {
        public string PropIdent { get; set; }
        public SgfPropValueNode[] PropValues { get; set; }
    }

    internal class SgfPropValueNode : SgfBaseNode {
        public SgfValueTypeNode ValueType { get; set; }
        public SgfComposeNode Compose { get; set; }
    }

    internal class SgfValueTypeNode : SgfBaseNode {
        public SgfToken Token { get; set; }
    }

    internal class SgfComposeNode : SgfBaseNode {
        public SgfValueTypeNode ValueType1 { get; set; }
        public SgfValueTypeNode ValueType2 { get; set; }
    }
}
